package de.tabuma.lib.contentmanagement.entity;

import java.util.*;
import java.lang.reflect.*;

/**
 * Representing all properties that will be need to create list content for content
 * @author $Author: $
 * @version $Revision: $
 * @since $Date: $
 * @see Content
 */
public class ListContent {

    /**
     * Class constructor.
     */
    public ListContent() {
        this.additionalListFields = new Hashtable<String, Hashtable<String, String>>();
        this.listParameterContent = new Hashtable<Field, List>();
        this.listParameterDisplayedField = new Hashtable<Field, List<Field>>();
        this.listParameterValue = "";
        this.listableFields = new Vector<Field>();
    }

    /**
     * Displayed fields in a list of the entity.
     * @see FormContent#entityClass
     */
    private Vector<Field> listableFields;
    /**
     * Getting displayed fields in a list of the entity.
     * @return displayed fields in a list of the entity.
     */
    public Vector<Field> getListableFields() {
        return listableFields;
    }
    /**
     * Setting displayed fields in a list of the entity.
     * @param showListView displayed fields in a list of the entity.
     */
    public void setListableFields(Vector<Field> showListView) {
        this.listableFields = showListView;
    }

    /**
     * Value from which the method getElementList (in FacadeInterface) will be called.
     * @see de.tabuma.lib.contentmanagement.FacadeInterface#getElementList(java.lang.String)
     * @see FormContent#facadeObject
     */
    private String listParameterValue;
    /**
     * Getting value from which the method getElementList (in FacadeInterface) will be called.
     * @return value from which the method getElementList (in FacadeInterface) will be called.
     */
    public String getListParameterValue() {
        return listParameterValue;
    }
    /**
     * Setting value from which the method getElementList (in FacadeInterface) will be called.
     * @param listParameterValue value from which the method getElementList (in FacadeInterface) will be called.
     */
    public void setListParameterValue(String listParameterValue) {
        this.listParameterValue = listParameterValue;
    }

    /**
     * Hashtable that puts a list of values to a property of the entityobject that represents a id that represents a member of a list
     * @see FormContent#entityClass
     */
    private Hashtable<Field,List> listParameterContent;
    /**
     * Getting hashtable that puts a list of values to a property of the entityobject that represents a id that represents a member of a list.
     * @return hashtable that puts a list of values to a property of the entityobject that represents a id that represents a member of a list
     * @see FormContent#entityName
     */
    public Hashtable<Field, List> getListParameterContent() {
        return listParameterContent;
    }
    /**
     * Setting hashtable that puts a list of values to a property of the entityobject that represents a id that represents a member of a list
     * @param listParameterContent hashtable that puts a list of values to a property of the entityobject that represents a id that represents a member of a list
     * @see FormContent#entityName
     */
    public void setListParameterContent(Hashtable<Field, List> listParameterContent) {
        this.listParameterContent = listParameterContent;
    }

    /**
     * Hashtable that puts a list of displayed fields of an element of the list in listParameterContent to a field.
     * @see #listParameterContent
     */
    private Hashtable<Field,List<Field>> listParameterDisplayedField;
    /**
     * Getting hashtable that puts a list of displayed fields of an element of the list in listParameterContent to a field.
     * @return hashtable that puts a list of displayed fields of an element of the list in listParameterContent to a field
     */
    public Hashtable<Field, List<Field>> getListParameterDisplayedField() {
        return listParameterDisplayedField;
    }
    /**
     * Setting hashtable that puts a list of displayed fields of an element of the list in listParameterContent to a field
     * @param listParameterDisplayedField hashtable that puts a list of displayed fields of an element of the list in listParameterContent to a field
     */
    public void setListParameterDisplayedField(Hashtable<Field, List<Field>> listParameterDisplayedField) {
        this.listParameterDisplayedField = listParameterDisplayedField;
    }

    /**
     * hashtable that puts a hashtable of parameters to a string sothat a additional field will be displayed in the list
     */
    private Hashtable<String,Hashtable<String,String>> additionalListFields;
    /**
     * Getting hashtable that puts a hashtable of parameters to a string sothat a additional field will be displayed in the list
     * @return hashtable that puts a hashtable of parameters to a string sothat a additional field will be displayed in the list
     */
    public Hashtable<String, Hashtable<String, String>> getAdditionalListFields() {
        return additionalListFields;
    }
    /**
     * Setting hashtable that puts a hashtable of parameters to a string sothat a additional field will be displayed in the list
     * @param additionalListFields hashtable that puts a hashtable of parameters to a string sothat a additional field will be displayed in the list
     */
    public void setAdditionalListFields(Hashtable<String, Hashtable<String, String>> additionalListFields) {
        this.additionalListFields = additionalListFields;
    }

}
